package com.tedu.api.thread;

/**
 * 软件----多个或者一个进程【理解：工厂】----很多线程【理解：工厂工人】
 * 线程创建方式三种：
 * 1.Thread类-------创建线程，编写步骤：
 * ①类继承Thread线程类
 * ②run方法---线程功能
 * ③start方法--启动线程
 * 优点：使用方便，拓展弱，继承线程，无法继承其他类【java类单继承】
 *      子类继承Thread，重写run方法，不利于线程复用
 * <p>
 * 2.Runnable接口---创建线程  编写步骤：
 * ①子类实现Runnable接口
 * ②Runnable父类引用指向子类【没有start方法】
 * ③创建Thread类，Runnable传入Thread构造器中
 * ④启动线程【start方法】
 *
 *
 * 3.匿名内部类方式---Lambda表达式
 */
public class RunnableAPI {
    public static void main(String[] args) {
        //2.Runnable父类引用指向子类对象：多态
        Runnable r= new MyRunnable();
        Runnable r1= new MyRunnable1();
        //线程的启动必须是start方法
        //3.创建Thread类--Runnable对象传入Thread构造器中
        Thread t=new Thread(r);
        Thread t1=new Thread(r1);
        //4.启动线程
        t.start();
        t1.start();
        //练习：Runnable实现创建线程--MyRunnable1 r2 t2
    }
}
//1.子类实现Runnable并且重写run方法
class MyRunnable implements Runnable{
    @Override
    public void run() {
        for (int i=0;i<1000;i++){
            System.out.println("醉卧沙场君莫笑");
        }
    }
}
class MyRunnable1 implements Runnable {
    @Override
    public void run() {
        for (int i = 0; i < 1000; i++) {
            System.out.println("古来征战几人回");
        }
    }
}